U.S. patent application Ser. No. 09/883,064, filed Jun. 15, 2001, assigned to the assignee of the present application, discloses a technique for accessing information in a peer-to-peer network. Each file accessible in the peer-to-peer network is assigned a respective hash ID or fingerprint ID which is used to describe the contents of that file. A conventional hash or fingerprinting algorithm analyzes the contents of a selected file and generates a unique hash ID or fingerprint ID that is used for identifying the specific contents of that file. The hashing algorithm is designed such that no two files having different file content will have the same hash ID. However, files having identical file content will have the same hash ID.
Files in the peer-to-peer network are then identified and/or accessed based upon their associated hash ID values. In this way it is possible to identify identical files stored in the peer-to-peer network which have different file names and/or other metadata descriptors. Additionally, since the content of all files having the same hash ID will be identical, an automated process may be used to retrieve the desired content from one or more of the identified files. For example, a user may elect to retrieve a desired file (having an associated hash ID) which may be stored at one or more remote locations in the peer-to-peer network. Rather than the user having to select a specific location for accessing and retrieving the desired file, an automated process may use the hash ID (associated with the desired file) to automatically select one or more remote locations for retrieving the desired file.
The automated process may choose to retrieve the entire file contents of the desired file from a specific remote location, or may choose to receive selected portions of the file contents of the desired file from different remote locations in the peer-to-peer network. Further, if an error occurs during the file transfer process, resulting in a partial file transfer, the automated process may be configured to identify the portion(s) of the desired file which were not retrieved, and automatically select at least one different remote location for retrieving the remaining contents of the desired file.
Although retrieving portions of the file from different remote locations may speed the file transfer process, one disadvantage of the process is that it cannot be determined if the file is corrupt until all the portions of the file are received. For example, assume a user is downloading a movie and the movie is being retrieved in multiple portions from multiple locations. Only after all the portions of the movie are retrieved is an attempt made to reassemble the movie and generate a new fingerprint ID. The new fingerprint ID is then compared with the known fingerprint ID, and the movie is determined to be corrupt if there is no match. Certain portions of the file may also be corrupted by a hacker who intentionally sends corrupt file portions (e.g. a virus) to the unsuspecting user downloading the file. In either case, spending the time to download the entire contents of the file before determining it is corrupt is a waste of the user's time and network bandwidth.
An additional disadvantage is that the peer nodes in a peer-to-peer network may be of different configurations and may have disparate network connection capabilities. In a public peer-to-peer network, for example, some peers may be home PC's with 56 k modem connections, while others may be high-speed corporate workstation with T3 connections. Consequently, some nodes in the network may be less reliable than others. With the current scheme for retrieving files in the network, there is currently no easy process for determining which peer nodes are producing the file transfer errors. Therefore, it is difficult to increase the overall reliability of the peer-to-peer network. An additional problem current peer-to-peer networks, is that there is no incentive to induce users to donate their peer devices to the network to serve files to other users.
Accordingly, what is needed is an improved method and system for distributing digital files in a peer-to-peer network. The method and system should reduce the impact of file transfer errors, weed out unreliable peer nodes, and reward users who allow their peer devices to serve files, thereby increasing bandwidth of the network. The present invention addresses such needs.